<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html>
<head>
<title>Advanced PyQt4 e-book</title>
<link rel="stylesheet" href="format.css" type="text/css">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="keywords" content="PyQt4, e-book, tutorial, Linux, Windows, programming, GUI, Qt4">
<meta name="description" content="Advanced PyQt4 e-book">
<meta name="language" content="en">
<meta name="author" content="Jan Bodnar">
<meta name="distribution" content="global">
</head>

<body>


<div class="content">

<a href="/" title="Home">Home</a>


<h1>Advanced PyQt4 tutorial</h1>


<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="4BTX7EB9N4J9N">
<input type="image" src="https://www.paypal.com/en_US/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>

<!-- <a href="https://euro.swreg.org/cgi-bin/s.cgi?s=85427&amp;p=85427-1&amp;q=1&amp;v=0&amp;d=0"><img src="http://www.swreg.org/downloads/SWREG_buynow.gif" alt="buy button"></a> -->


<p>
The e-book has <b>248</b> pages. It has <b>65</b> code examples. Many of the examples are unique; reader
will not find them anywhere else. It is an ideal material for those, who already
know some basics of PyQt4 library. Carefully chosen examples always focus on one important
aspect. Unless it is a more complex example. The book is written in plain English. 
</p>

<p>
The code examples were tested on Linux and Windows. Python 2.7 and PyQt4 4.7.4 on Windows.
Python 2.6.5 and PyQt4 4.7.2 on Linux. After purchasing the e-book, you 
will obtain a zip file. With the pdf file, you will also obtain all code examples. 
</p>

<p>
If something goes wrong with the payment process, drop me an email at vronskij(at)gmail.com.
</p>

<h2>Price</h2>

<p>
The e-book costs <b>13.5 €</b>. 
</p>


<h2>About this tutorial</h2>

<p>
This is Advanced PyQt4 e-book. This e-book is a tutorial,
which covers several interesting parts of the library.
</p>

<p>
This e-book covers the following:
</p>

<ul>
  <li>Graphics</li>
  <li>The Graphics View Framework</li>
  <li>Layout management</li>
  <li>Custom widgets</li>
  <li>Model &amp; View widgets</li>
  <li>QtSql module</li>
  <li>Nibbles</li>
  <li>Sokoban</li>
  <li>Minesweeper</li>
</ul>


<p>
The first chapter presents 12 more advanced examples for low level
graphics with the <b>QPainter</b>. We will create a
gray scale image, do some effects with transparecy. Reflection, clipping, 
and hit test examples are among other code examples.
</p>

<p>
You will not find many examples covering the Graphics View Framework on the Internet.
Or in any other material. 
I had only 2 working examples, when I began studying the framework. This chapter
has 11 code examples, ranging from a simple starting example to a skeleton of a
computer game. Here you will learn about transformations, selections, item animations,
zooming, collision detection or grouping of items. 
</p>

<p>
Layout management is considered to be one of the most difficult areas of GUI
programming. Writers usually only skim the topic, covering the very basics of
it. Based on my experience while writing a complete e-book dedicated to 
layout management, this chapter was a piece of cake. Once you know the principles
behind the process, you can utilize them in other GUI toolkits too.
Almost 40 pages and 17 examples, you will learn everything important 
about layout management. 
</p>

<p>
In the third chapter, we will show, how to create three custom widgets. A Led widget, 
a CPU widget and a Thermometer widget. 
</p>

<p>
In the Model &amp; View widgets part, we will cover important Model/View
widgets. You will learn how to work with <b>QTableView</b>, <b>QTreeView</b>
and <b>QListView</b>. This is another area, on which you will find very little information
elsewhere. 
</p>

<p>
In the QtSql module chapter, we will cover the basics of the <b>QtSql</b>, which
is used for database programming.
</p>

<p>
One of the best ways to learn programming, is to create computer games. As a bonus,
you will have three simple 2D games. Nibbles, Sokoban and Minesweeper.
</p>

<h2>Screenshots</h2>

<p>
Here you can see some of the screenshots from the e-book.
</p>


<img src="images/actresses.png" alt="Actresses">
<img src="images/qsqlquerymodel.png" alt="qsqlqureymodel">
<img src="images/minesweeper.png" alt="Minesweeper">
<img src="images/progressmeter.png" alt="Progressmeter">
<br>
<br>
<img src="images/thermometer.png" alt="Thermometer">
<img src="images/findreplace.png" alt="Find/Replace">

<br>
<img src="images/sorting.png" alt="Sorting">
<img src="images/alignments.png" alt="Alignments">

<br>
<br>

<div class="botNav, center">
<span class="botNavItem"><a href="/">Home</a></span> ‡ <span class="botNavItem"><a href="#">Top of Page</a></span>
</div>


<div class="footer">
<div class="signature">
<a href="/">ZetCode</a> last modified August 6, 2010  <span class="copyright">&copy; 2007 - 2013 Jan Bodnar</span>
</div>
</div>

</div>

<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-5536206-1']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>

</body>
</html>
